#pragma once 

#include<iostream>
#include<string>
#include<functional>
#include "log.hpp"
//#include "thread.hpp"

typedef std::function<int(int, int)> func_t;   //这个typedef 如果定义全局变量，两个文件都取了相同的名字，
                                                //可能就会产生影响，但是这个是局部变量，不会对其他的文件产生影响!!

class Task
{
public:
    Task(){}
    Task(int x, int y, func_t func):_x(x),_y(y),_func(func){}

    void operator()(const std::string &name)
    {
        // std::cout << "线程 " << name << " 处理完成, 结果是: " << x_ << "+" << y_ << "=" << func_(x_, y_) << std::endl;
        logMessage(WARNING, "%s 处理完成：%d+%d = %d | %s | %d", 
            name.c_str(), _x, _y, _func(_x, _y), __FILE__, __LINE__);
    }
private:
    int _x;
    int _y;
    func_t _func;
};